package yao.xerophyte.java.thread._volatile;

import java.util.concurrent.TimeUnit;

/**
 * 演示volatile功能
 * 
 * 保证共享内容的线程可见性。有volatile时，一个线程修改了共享变量，另一个线程会马上获取到这个变更，没有时，则不会
 */
public class VolatileTest_2 {
    //对比一下有无volatile的情况下，整个程序运行结果的区别
    volatile boolean running = true; 
//    boolean running = true; 
    void m() {
        System.out.println("m start");
        while(running) {
        }
        System.out.println("m end!");
    }
    
  
    public static void main(String[] args) {
        //1、保证共享内容的线程可见性
        VolatileTest_2 t = new VolatileTest_2();
        new Thread(t::m, "t1").start();
        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        t.running = false;
    }
    
}
